package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.UserBean;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface IUserMapper {
    /**
     * 登陆，如果登陆成功，同时查询权限集合
     * @param userName 用户名
     * @param pwd 密码
     * @return 登陆用户，如果登陆失败返回null
     */
    @Select("select * from t_user where u_name=#{userName} and u_pwd=#{pwd}")
    @ResultMap("userGradeMap")
    public UserBean login(@Param("userName") String userName,@Param("pwd") String pwd);

    /**
     * 按用户名动态分页查询用户，同时查询每个用户的角色集合
     * @param userName 用户名
     * @return 用户集合
     */
    public List<UserBean> findByItem(@Param("userName") String userName);

    /**
     * 添加用户，同时添加该用户的角色
     * @param user 用户对象
     */
    public int addUser(UserBean user);

    /**
     * 添加用户的角色集合
     * @param userId 用户ID
     * @param roleArray 角色ID数组
     */
    public void addUserRole(@Param("userId") int userId,@Param("roleArray") int[] roleArray);
    /**
     * 删除用户，同时删除该用户和角色的中间表信息
     * @param id 用户ID
     */
    @Delete("delete from t_user_role where fk_userId=#{id};" +
            "delete from t_user where pk_userId=#{id};")
    public void delUser(int id);

    /**
     * 按ID查询用户信息，同时查询该用户的角色和权限集合
     * @param id 用户ID
     * @return 用户对象
     */
    @Select("select * from t_user where pk_userId=#{id}")
    @ResultMap("userRoleGradeMap")
    public UserBean findById(int id);

    /**
     * 修改用户角色
     * @param id 用户ID
     * @param roleArray 角色ID数组
     */
    public void updateUserGrade(@Param("id") int id,@Param("roleArray") int[] roleArray);
}
